using System;
using System.Collections.Generic;
using System.Text;
using EYDIngenieria.ERP.ObjetosDeNegocio.Dominio;
using Castle.ActiveRecord;
using NHibernate.Expression;

namespace EYDIngenieria.ERP.ObjetosDeNegocio.Repositorio
{
    public class RepositorioInventario
    {
        public void Agregar(Inventario i)
        {
           i.Create();
        }

        public Inventario[] Listar()
        {
            ICriterion[] query = { Expression.Gt("Saldo", 0.0) };
            Order[] sort = { Order.Asc("Fecha") };
            return ActiveRecordBase<Inventario>.FindAll();
        }

        

        public Inventario[] Listar(FamiliaProducto f)
        {

            return ActiveRecordBase<Inventario>.FindAll();
        }

        public Inventario[] ListarInventarioDeFamilia(FamiliaProducto f)
        {
            List<Inventario> inventario = new List<Inventario>();
            Inventario[] inventarios = ActiveRecordBase<Inventario>.FindAll();
            foreach (Inventario i in inventarios)
            {
                if (i.Producto.Familia.Id == f.Id && i.Saldo > 0)
                {
                    inventario.Add(i);
                }   
            }
            return inventario.ToArray();
        }

        public void Modificar(Inventario i)
        {
            i.UpdateAndFlush();
        }

        public void Eliminar(Inventario i)
        {
           i.DeleteAndFlush();
        }

        public Inventario[] Buscar(Producto p)
        {

            ICriterion[] query = {Expression.Eq("Producto", p)};
            Order[] sort = { Order.Asc("Fecha") };
            return ActiveRecordBase<Inventario>.FindAll(sort, query);
        }

       

        
    }
}
